# -*- coding: utf-8 -*-

#本部分的目的是实现从一个文件夹中读取图片并识别出图中的圆形指示牌

# =============包含OpenCV库，os模块============= #
import  cv2
import  os
from graph import graph
# ============================================= #


# ===============全局变量======================= #
def circle_detection(picroad,new_path):
  if not os.path.exists(new_path):
    # 如果筛选文件夹不存在则新建文件夹
        os.mkdir(new_path)
# ============================================= #

# ================主函数======================= #
#遍历文件夹中的所有图片
  a=0
  b=0
  for img_name in os.listdir(picroad):
    #输出读取的图片名
    print (img_name)
    #根据路径读取图片
    imageroad=picroad+img_name
    img=cv2.imread(imageroad)
    #显示图片
    cv2.namedWindow(img_name)
    #cv2.imshow(img_name,img)
    #灰度化
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    #霍夫变换圆检测
    circles=cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,220,param1=100,param2=30,minRadius=1,maxRadius=300)
    
    # if len(circles[0])==0:
        #print('本图中没有圆形指示牌！')
    #else:
        #for circle in circles[0]:
            #圆心坐标
           # x=int(circle[0])
           # y=int(circle[1])
            #半径
           # r=int(circle[2])
            #在原图中用红色标记出检测到的圆形指示牌
           # img=cv2.circle(img,(x,y),r,(0,0,255),2)
            #显示检测结果
           # cv2.imshow('检测结果',img)

    #输出检测到圆的个数
    print('检测到的圆个数是：')
    print(len(circles[0]))
    #在原图上画圆
    for circle in circles[0]:
        #圆心坐标
        x=int(circle[0])
        y=int(circle[1])
        #半径
        r=int(circle[2])
        #在原图中用红色标记出检测到的圆形指示牌
        img=cv2.circle(img,(x,y),r,(0,0,0),3)
        #显示检测结果
        #cv2.imshow(img_name,img)
        resultroad=new_path+img_name
        cv2.imwrite(resultroad,img)

  y=[a,b]
  print(y)
  x=["无","有"]
  graph(x,y)#画出统计图            
  cv2.waitKey(0)  #按任意键退出
  cv2.destroyAllWindows()  #关闭所有窗口





